using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;

namespace QldtSdh.DAL.Models.Mapping
{
    public class LopHocPhan_BangDiemMap : EntityTypeConfiguration<LopHocPhan_BangDiem>
    {
        public LopHocPhan_BangDiemMap()
        {
            // Khoá chính
            this.HasKey(t => t.MaBangDiemGUID);

            // Các cột
            this.Property(t => t.MaLopHocPhanGUID)
                .IsRequired()
                .HasMaxLength(50);

            this.Property(t => t.MaBangDiemGUID)
                .IsRequired()
                .HasMaxLength(50);

            this.Property(t => t.GioThi)
                .HasMaxLength(50);

            this.Property(t => t.MaPhongThi)
                .HasMaxLength(50);

            this.Property(t => t.HinhThucThi)
                .HasMaxLength(255);

            this.Property(t => t.MaDotThiGUID)
                .IsRequired()
                .HasMaxLength(50);

            this.Property(t => t.MaNguoiDungNhapBangDiem)
                .HasMaxLength(50);

            this.Property(t => t.MaNguoiDungKiemTraBangDiem)
                .HasMaxLength(50);

            // Ánh xạ Property của POCO vào Column của Table
            this.ToTable("LopHocPhan_BangDiem");
            this.Property(t => t.MaLopHocPhanGUID).HasColumnName("MaLopHocPhanGUID");
            this.Property(t => t.MaBangDiemGUID).HasColumnName("MaBangDiemGUID");
            this.Property(t => t.LanThiLopHocPhan).HasColumnName("LanThiLopHocPhan");
            this.Property(t => t.NgayThi).HasColumnName("NgayThi");
            this.Property(t => t.GioThi).HasColumnName("GioThi");
            this.Property(t => t.MaPhongThi).HasColumnName("MaPhongThi");
            this.Property(t => t.HinhThucThi).HasColumnName("HinhThucThi");
            this.Property(t => t.MaDotThiGUID).HasColumnName("MaDotThiGUID");
            this.Property(t => t.MaNguoiDungNhapBangDiem).HasColumnName("MaNguoiDungNhapBangDiem");
            this.Property(t => t.NgayNhapBangDiem).HasColumnName("NgayNhapBangDiem");
            this.Property(t => t.TrangThai).HasColumnName("TrangThai");
            this.Property(t => t.MaNguoiDungKiemTraBangDiem).HasColumnName("MaNguoiDungKiemTraBangDiem");
            this.Property(t => t.NgayKiemTraBangDiem).HasColumnName("NgayKiemTraBangDiem");

            // Các quan hệ
            this.HasOptional(t => t.NguoiKiemTraBangDiem)
                .WithMany(t => t.ListBangDiemLopHocPhan_DaKiemTra)
                .HasForeignKey(d => d.MaNguoiDungKiemTraBangDiem);

            this.HasOptional(t => t.NguoiNhapBangDiem)
                .WithMany(t => t.ListBangDiemLopHocPhan_DaDuyet)
                .HasForeignKey(d => d.MaNguoiDungNhapBangDiem);

            this.HasRequired(t => t.LopHocPhan)
                .WithMany(t => t.LopHocPhan_BangDiem)
                .HasForeignKey(d => d.MaLopHocPhanGUID);

        }
    }
}
